const jwt = require("jsonwebtoken");
const { User} = require("../models");
const {
    failure,
    UnauthorizedError,
    success
  } = require("../utils/response");


  module.exports = async (req, res, next) => {
      try {
        // 判断Token是否存在
        const { token } = req.headers;
        if (!token) {
          throw new UnauthorizedError("请先登录");
        }
        // 解析Token
        // 验证Token是否有效
        const { userId } = jwt.verify(token, process.env.JWT_SECRET_KEY);

        // 判断用户是否存在
        const user = await User.findByPk(userId);

        if (user) {
         // 如果验证通过，将用户信息挂载到req上
          req.user = user;
        }
       // 一定要加next()，否则请求会卡住
        next()
          
      }catch (error) {
        failure(res, error);
      }
  }
